﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MVVMDemo.Model;

namespace MVVMDemo.ViewModel
{
    public class PersonViewModel : ViewModelBase
    {
        #region field
        //static readonly là hằng số được khởi tạo khi thực thi chương trình
        //Const là hằng số được khởi tạo khi biên dịch chương trình
        private readonly Person person;
        #endregion

        /// <summary>
        /// Tạo new instance của lớp PersonViewModel
        /// </summary>
        
        public PersonViewModel(Person person)
        {
            if (person == null)  
                throw new NullReferenceException("person");
            this.person = person;

        }

        #region properties FirstName
        ///<summary>
        ///get and set firstname
        ///</summary>

        public string FirstName
        {
            get { return this.person.FirstName; }
            set { this.person.FirstName = value; OnPropertyChanged("FirstName"); }
        }

        ///<summary>  
        /// get and set LastName
        ///</summary>

        public string LastName
        {
            get { return this.person.LastName; }
            set { this.person.LastName = value; OnPropertyChanged("LastName"); }
        }

        ///<summary>  
        /// get and set person is Male
        ///</summary>

        public bool IsMale
        {
            get { return this.person.Gender == Gender.Male; }
            set
            {
                if (value)
                    this.person.Gender = Gender.Male;
                else
                    this.person.Gender = Gender.Female;
                OnPropertyChanged("IsMale");
                OnPropertyChanged("IsFemale");
            }
        
        }

        ///<summary>  
        /// get and set person is Female
        ///</summary>
        
        public bool IsFemale
        {
            get { return this.person.Gender == Gender.Female; }
            set
            {
                if (value)
                    this.person.Gender = Gender.Female;
                else
                    this.person.Gender = Gender.Male;
                OnPropertyChanged("IsFemale");
                OnPropertyChanged("IsMale");
            }
        }

        ///<summary>  
        /// get and set Age of person
        ///</summary>

        public int Age
        {
            get { return this.person.Age; }
            set
            {
                this.person.Age = value;
                OnPropertyChanged("FirstName");
            }
        }

        ///<summary>  
        /// lấy gói đối tượng Person đã được đóng gói
        ///</summary>

        public Person Person
        {
            get { return this.person; }
        }

             
        #endregion


    }
}
